package shinesend.com.cn.anscyhandledemo;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.DropBoxManager;
import android.os.Environment;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
    //网络下载---->添加权限
    /*
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     */
    private ImageView image;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image = (ImageView) findViewById(R.id.imageview);
    }

    public void click(View view) {
        //实现网络请求获取数,如果直接在主线程中进行网络请求的时候 会发生onMainNetWorkException
        //网络请求耗时间;如果解决这个问题呢 1;catch 2:开启另外的一个子线程 ;
        final String link = "http://pic22.nipic.com/20120725/6573765_165852471000_2.jpg";//地址
        //文件名字
        final String fileName = getFileOnScard("temp"+ SystemClock.currentThreadTimeMillis());
//        //创建文件
//        File file = new File(fileName);
//        //如果不存在的化
//        if (!file.exists()){
//            try {
//                file.createNewFile();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                    URL url = new URL(link);
                    //开启url网络连接
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    //设置方法
                    connection.setRequestMethod("GET");
                    //获取返回的参数
                    if (connection.getResponseCode()==HttpURLConnection.HTTP_OK){
                        //当连接成功的时候使用
                        //获取从网络上得到的流
                        InputStream is = connection.getInputStream();
                        //        //创建文件
        File file = new File(fileName);
        //如果不存在的化
        if (!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
                        /*
                         //这是一个读写的过程,从网络上读取流-->然后在写到文件里
                        OutputStream os = new FileOutputStream(fileName);
                        byte[] bytes = new byte[1024];
                        //获得从服务器返回数据的大小;
                        int byttal = connection.getContentLength();
                        int bytconut = 0;
                        int len  = 0;
                        while ((len=is.read(bytes))!=-1){
                            bytconut+=len;
                            //将数据写在
                            os.write(bytes,0,len);
                            Log.e("----------","百分比>>>>"+bytconut*100/+byttal+"%");
                        }
                        //
                        os.flush();//刷新
                        is.close();//关闭
                         */
                        //如何将下载的图片添加到IamgeView呢; 在子线程是不能将图片添加到iamgeView上的;
                       Bitmap btm =  BitmapFactory.decodeStream(is);//将流转化为bitmap
                       image.setImageBitmap(btm);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }
    private String  getFileOnScard(String s){
        //路径+文件
        String base ;
        //如果sdcar存在的化;
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            base = Environment.getExternalStorageDirectory().getAbsolutePath();
        }else{//如果不存在就保存到内存中
            base = Environment.getDownloadCacheDirectory().toString();
        }
        base+="/"+s;
        return base;
    }
}
